#!/bin/bash

##算术运算符,运算符和表达式之间必须要又空格
#num1=10
#num2=20
#val=`expr $num1 + $num2`
#echo "num1+num2: $val"
#val=`expr $num2 - $num1`
#echo "num2-num1: $val"
#if [ $num1 == $num2 ]
#then
#echo "num1=num2"
#fi
#if [ $num1 != $num2 ]
#then
#echo "num1 != num2"
#fi

##关系运算符
#a=10
#b=20
#if [ $a -eq $b ]   #是否等于
#then echo "a=b"
#else echo "a!=b"
#fi
#if [ $a -ne $b ]  #不等于
#then echo "a!=b"
#else echo "a=b"
#fi
#if [ $a -gt $b ] #大于
#then echo "a>b"
#else echo "a<b"
#fi
#if [ $a -lt $b ] #小于
#then echo "a<b"
#else echo "a>b"
#fi
#if [ $a -ge $b ] #大于等于
#then echo "a>=b"
#else echo "a<b"
#fi
#if [ $a -le $b ] #小于等于
#then echo "a<=b"
#else echo "a>b"
#fi


## 布尔运算符 ! 逻辑非运算符、 -a 逻辑与运算符 = AND、 -o 逻辑或运算符 = OR
#if [ $a -ge 10 -a $b -le 50 ]
#then echo "true"
#else echo "false"
#fi
#if [ $a -gt 20 -o $b -le 50  ]
#then echo "true"
#else echo "false"
#fi

## 字符串运算符 -z 字符串长度为0返回true 、-n 字符串长度不为0返回true、str 字符串是否为空，为空则返回false,str可省略
#str1=”abc“
#str2=""
#if [ -e $str1 ]
#then echo "str1为空字符串"
#else echo "str1不为空字符串"
#fi	
#if [ -n $str2 ]
#thien echo "str2是字符串"
#else echo "str2是空字符串"
#fi
#if [ $str2 ]
#then echo "str2为字符串"
#else echo "str2是空字符串"
#fi


## 数组的定义和访问 
#NAME[0]="Zara"
#NAME[1]="Qadir"
#NAME[2]="Mahnaz"
#NAME[3]="Ayan"
#NAME[4]="Daisy"
#echo "First Index: ${NAME[0]}"
#echo "Second Index: ${NAME[1]}"
#echo "Array:${NAME[*]}"
#echo "Array:${NAME[@]}"

## 文件测试操作 -r 读权限、-w 写权限、-x 执行权限、 -f 是否普通文件、-d 是否为文件夹、-s 文件大小是大于0，为0则返回true、-e 文件是否存在
# 多行注释
:<<!
file="/root/shell/myShell.sh"

if [ -e $file ]
then echo "文件存在"
else echo "文件不存在"
fi

if [ -f $file ]
then echo "普通文件"
fi


if [ -r $file -a -x $file -a -w $file ]
then echo "可读可写可执行"
fi
!

## 条件语句 【if [ 条件表达式 ] then 逻辑体 fi】、【if [ 条件表达式 ] then 逻辑体 else 逻辑体 fi】、【if [ 条件表达式 ] then 逻辑体 elif [ 条件表达式2] then 逻辑体 else 逻辑体 fi】
score=90
if [ $score -ge 90 ]
then echo "A"
elif [ $score -ge 80 ]
then echo "B"
elif [ $score -ge 60 ]
then echo "C"
else echo "D"
fi


## case 条件语句
case $1 in
-f) echo "fileName: $2";;
-d) echo "dirName:$2"
esac

case $1 in 
1)  echo "周一";;
2)  echo "周二";;
*)  echo "other";;
esac


## 循环语句 
# while循环： while [ 循环条件 ] do 逻辑体 done
#a=1
#while [ $a -le 10 ] 
#do 
#  echo "a:$a"
#  a=`expr $a + 1`
#done

# for循环：for 变量 in 循环数据 do 逻辑体 done
#for i in 1 2 3 4 5
#do echo "i: $i "
#done

#for item in  ${NAME[*]}
#do echo "item: $item"
#done

#for File in /opt/mysql5/*.rpm
#do echo "fileName: $File"
#done


# select 选择循环，一般搭配case语句使用
#select DRINK in tea coffee water juice appe all none
#do
# case $DRINK in
#   tea|coffee|water|juice|appe)
#        echo "I need $DRINK " ;;
#   none) break;;
#   all) echo "Invalid selection";;
# esac
#done

# break,continue
#a=0
#while [ $a -le 10 ]
#do
#  a=` expr $a + 1`
#  if [ $a -eq 5 ]
#  then break
#  elif [ $a -eq 3 ]
#  then continue
#  fi
#  echo "a: $a"
#done

## 参数的访问
#echo "File_Name:$0"
#echo "First_Argument:$1"
#echo "Second_Argument:$2"
#echo "total_arguments_num:$#"
#echo "Arguments_1:$*"
#echo "Arguments_2:$@"
#echo "exit_command:$?"


## 系统变量的访问
#echo "PATH=$PATH"
#echo "USER=$USER"

## 使用自定义环境变量
#for FILENAME in $MYSQL5RPMPATH/*.rpm
#do
# echo "fileName:$FILENAME"
#done

## 预定义变量 $$ 当前进程号，$! 最后执行得进程号 ，$? 最后执行得结果，0表示执行成功，1表示执行错误
#echo "当前进程号=$$"
#/root/shell/myShell.sh &    # &执行某个脚本
#echo "最后执行的进程号=$!"
#echo "执行结果=$?"


## 运算符 $(())、$[]、expr m + n
#echo result=$(((2+3)*4))
#echo result=$[(2+3)*4]
#TEMP=`expr 2 + 3`
#echo result=` expr $TEMP \* 4`
#echo sum=$[$1 + $2]


## 读取控制台输入的数据 read [-p -t] 变量名  -p 输入的提示语 -t等待的时间
#read -p 请输入您的年龄 AGE
#echo 您的年龄是：$AGE 岁
#read -p 请在1秒内输出$1+$2结果 -t 2  RESULT
#SUM=$[$1 + $2]
#if [ $RESULT -eq $SUM ]
#then echo "回答正确"
#else echo "回答错误"
#fi

## 函数
getSum(){
  SUM=$[ $1 + $2 ]
  return $SUM
}

getSum 10 20

res=$?

echo result=$res



